<?php
/**
 * 
 * Класс для кэширования данных на сайте
 * @author mr.Pie
 * @version 1.0
 */
class Cache {
	private static $cache;
	
	/**
	 * Инициализация
	 */
	public static function Create() {
		self::$cache = array();
		return 0;
	}
	/**
	 * Считывание кэша
	 * @param string $name имя кэш файла
	 * @return array
	 */
	static function Read($name) {
		$fname = CACHE_PATH."/".md5($name);
		if (file_exists($fname)) {
			$fopen = fopen($fname, 'rb');
			$read  = fread($fopen, filesize($fname));
			fclose($fopen);
			self::$cache[$name] = unserialize($read); 
			return TRUE;
		}
		self::$cache[$name] = NULL;
		return FALSE;
	}
/**
	 * Считывание кэша
	 * @param string $name имя кэш файла
	 * @return array
	 */
	static function ReadHTML($name) {
		$fname = CACHE_PATH."/".md5($name);
		if (file_exists($fname)) {
			$fopen = fopen($fname, 'rb');
			$read  = fread($fopen, filesize($fname));
			fclose($fopen);
			self::$cache[$name] = $read; 
			return TRUE;
		}
		self::$cache[$name] = NULL;
		return FALSE;
	}
	/**
	 * Сохранение кэша
	 * @param string $name имя кэш файла
	 * @param array $data данные
	 */
	static function Write($name, &$data, $mode = 'w') {
		$fname = CACHE_PATH."/".md5($name);
		$fopen = fopen ($fname, $mode);
		fwrite($fopen, serialize($data));
		fclose($fopen);
		return 0;
	}
/**
	 * Сохранение кэша
	 * @param string $name имя кэш файла
	 * @param array $data данные
	 */
	static function WriteHTML($name, &$data) {
		$fname = CACHE_PATH."/".md5 ($name);
		$fopen = fopen($fname, 'w');
		fwrite($fopen, $data);
		fclose($fopen);
		return 0;
	}
	/**
	 * 
	 * Удаление кэша
	 * @param string $name имя кэш файла
	 */
	public static function ClearCache($name) {
		unlink(CACHE_PATH."/".md5($name));
		self::Clear($name);
		return 0;
	}
	public static function Clear($name, $var = '') {
		if ($var == '') {unset(self::$cache[$name]);}
		else {unset(self::$cache[$name][$var]);}
		return 0;
	}
	public static function Get($name, $var = '') {
		if ($var == '') {return (isset(self::$cache[$name]))?(self::$cache[$name]):(NULL);}
		else {return (isset(self::$cache[$name][$var]))?(self::$cache[$name][$var]):(NULL);}
	}
	public static function isSet($name, $var) {return iseet(self::$cache[$name][$var]);}
}
?>